Skip to content

select LISTAGG(TABLE_NAME, '","') WITHIN GROUP (ORDER BY TABLE_NAME) from MID_TABLE_LIST;

举例

sql
  select '"'||LISTAGG(ALIAS_NAME, '","') WITHIN GROUP (ORDER BY ALIAS_NAME)||'"' from MID_TABLE_LIST where rmk is null or rmk not like '%废弃%'

LISTAGG 函数的结构

sql
LISTAGG(expression, delimiter) WITHIN GROUP (ORDER BY column)

expression:要进行聚合(拼接)的列或值。这个参数是必须的,指明要合并的字段。例如:student_name、score 等。

delimiter:分隔符,用于分隔拼接的多个值。这个参数是必须的,告诉 LISTAGG 用什么符号来分隔拼接的结果。例如:逗号、空格等。

WITHIN GROUP:是一个关键字,告诉 LISTAGG 聚合时是否需要排序。这个子句是必须的,即使不需要排序,也需要加上这个子句。它用来指定排序方式,通常需要和 ORDER BY 一起使用。 ORDER BY:指定聚合过程中各个值的顺序。

ORDER BY 是 可选的,如果你不需要对拼接的值进行排序,可以省略它。

如果不指定排序,Oracle 会按默认顺序拼接,但这可能不是你想要的结果。 哪些部分是必须的? expression:必需的,必须提供你想要聚合的字段或值。 delimiter:必需的,必须提供拼接时使用的分隔符。 WITHIN GROUP:必须的,即使你不需要排序,也需要包含 WITHIN GROUP。 ORDER BY:可选的,如果你希望对拼接结果进行排序,则需要使用 ORDER BY。